package com.db.base;

import java.util.List;

public interface BaseDao {

	/**
	 * 查询列表
	 * @param namespaceId XML配置文件节点ID
	 * @return List
	 * @throws Exception
	 */
	public <E> List<E> query(String namespaceId)  throws Exception ;
	/**
	 * 查询列表
	 * @param namespaceId XML配置文件节点ID
	 * @param parameters 参数
	 * @return List
	 * @throws Exception
	 */
	public <E> List<E> query(String namespaceId,Object parameters)  throws Exception ;
	/**
	 * 查询对象
	 * @param namespaceId XML配置文件节点ID
	 * @param parameters 参数
	 * @return 对象
	 * @throws Exception
	 */
	public <T> T queryObject(String namespaceId,Object parameters)  throws Exception ;
	/**
	 * 新增一条记录
	 * @param namespaceId XML配置文件节点ID
	 * @param parameters 参数
	 * @return 对象
	 * @throws Exception
	 */
	public Object insert(String namespaceId, Object parameters) throws Exception;



	/**
	 * 批量新增
	 * @param namespaceId XML配置文件节点ID
	 * @param parameters 条件参数列表
	 * @throws Exception
	 */
	public <E> void batchInsert(String namespaceId, List<E> parameters) throws Exception;
	
	/**
	 * 批量更新
	 * @param namespaceId XML配置文件节点ID
	 * @param parameters 条件参数列表
	 * @throws Exception
	 */
	public <E> void batchUpdate(String namespaceId, List<E> parameters) throws Exception;
	
	/**
	 * 更新
	 * @param namespaceId XML配置文件节点ID
	 * @param parameters 条件参数
	 * @return
	 * @throws Exception
	 */
	public int update(String namespaceId, Object parameters) throws Exception;
	/**
	 * 删除功能
	 * @param namespaceId XML配置文件节点ID
	 * @param parameters 参数
	 * @return
	 * @throws Exception 
	 */
	public int delete(String namespaceId, Object parameters) throws Exception;
	/**
	 * 统计总数，一般用于分页
	 * @param namespaceId XML配置文件节点ID
	 * @return 
	 * @throws Exception 
	 */
	public Integer count(String namespaceId) throws Exception;
	/**
	 * 统计总数，一般用于分页
	 * @param namespaceId XML配置文件节点ID
	 * @param parameters 参数
	 * @return
	 * @throws Exception 
	 */
	public Integer count(String namespaceId,Object parameters) throws Exception;
	
	/**
	 * 查询
	 * @param namespaceId XML配置文件节点ID	
	 * @return 对象
	 * @throws Exception
	 */
	public Object queryObject(String namespaceId) throws Exception;
}
